The present invention is directed to methods and apparatus for providing multilevel coset coding and probabilistic error correction, and more particularly to coding multi-bit data corresponding to an analog signal (e.g., pulse amplitude modulated (PAM) or peak-limited communication system) to maintain data integrity.
Flash memory devices can be used to store multiple bits (e.g., 3 bits) of information in each memory cell. This can be done by, for example, programming one of multiple levels of charge in an isolated region of the memory cell (e.g., a floating gate). In particular, a cell that is used to store one of eight different signal levels can be used to represent, for example, a three-bit data point. As defined herein the term signal level refers to a charge, voltage, phase status or any other electrical characteristic that is stored and used to represent one or more data points.
Conventional systems use coding schemes to protect data integrity of the information stored in such memory devices. The conventional coding schemes typically encode and decode information on granularity of a data point (e.g., 3-bits) using one or more codes and do not account for the signaling method that is used. In particular, because the digital data points are represented by different signal levels stored in the memory, most errors that occur result from a minimum distance error between two charges. For example, when reading the memory, the read out signal level might be mistaken from an immediate neighbor instead of from a level that is more than one level away. Thus, error correction code (ECC) designed without considering the signaling method may not be optimal.
Accordingly, taking into account signaling methods in memory devices, such as flash memory, becomes critical for optimal ECC design.